Field of the Invention
The invention relates generally to a graphics processing unit, and a method for operating such a graphic processing unit, and more particularly to techniques for performing tessellation with such a graphics processing unit.
Description of the Related Art
A graphics processing unit (GPU) may implement a graphics processing operation that includes tessellation. To render complex shapes for producing a graphics image for display, the complex shapes usually need to be converted into meshes of rendering primitives, e.g. a plurality of triangles. The process of converting those complex shapes into meshes of rendering primitives is called tessellation. To state it in another way, the tessellation process refers to dividing a portion (referred to as a patch) of the surface of an object into a plurality of smaller portions, and interconnecting the smaller portions together. Typically, tessellation is about converting a coarse surface into a plurality of primitives to result in a higher resolution surface. Yet, receiving information contained within the higher resolution surface may be bandwidth inefficient because the amount of information needed to define the higher resolution surface may be much larger than the amount of information needed to define the coarse resolution surface.
In the past, a CPU and a GPU usually coordinate in a master-slave mode, in which the CPU sends instructions to utilize the GPU for performing specific rendering applications. As technology advances, the GPU itself may generate the instructions, later being executed by itself as well. For instance, in OpenCL 2.0, the GPU is allowed to enqueue commands and/or instructions to itself without interaction with the CPU, which is referred to as kernel enqueueing. Simply put, kernel enqueueing enables a kernel to independently enqueue to a single device; moreover, the kernel may enqueue code and control code execution order on its own. As a result, the GPU may be more flexible and autonomous in performing related computation.